package com.ambow.core.service.impl;

import com.ambow.core.mapper.DqGameMapper;
import com.ambow.core.mapper.DqWarehouseMapper;
import com.ambow.core.po.DqGame;
import com.ambow.core.po.DqInvitation;
import com.ambow.core.mapper.DqInvitationMapper;
import com.ambow.core.po.DqWarehouse;
import com.ambow.core.service.DqInvitationService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.Date;

/**
 * <p>
 * 邀请码表 服务实现类
 * </p>
 *
 * @author dq
 * @since 2022-09-05
 */
@Service
public class DqInvitationServiceImpl extends ServiceImpl<DqInvitationMapper, DqInvitation> implements DqInvitationService {

    @Autowired
    private DqInvitationMapper dqInvitationMapper;
    @Autowired
    private DqGameMapper dqGameMapper;
    @Autowired
    private DqWarehouseMapper dqWarehouseMapper;
    //判断激活码是否过期
    @Override
    public boolean ifGuoQi(String ma) {
        QueryWrapper<DqInvitation> wrapper = new QueryWrapper<>();
        //根据激活码内容找对应数据
        wrapper.eq("invitation_string",ma);
        DqInvitation dqInvitation = dqInvitationMapper.selectOne(wrapper);
        //获取截止日期
        LocalDateTime endTime = dqInvitation.getEndTime();

        //获取当前时间
        LocalDateTime nowTime= LocalDateTime.now();

        // 判断当前时间是否在结束时间之后
        boolean after = nowTime.isAfter(endTime);
        System.out.println("是否过期"+after);
        return after;
    }

    //判断激活码是否已经被使用
    @Override
    public boolean ifUse(String ma) {
        QueryWrapper<DqInvitation> wrapper = new QueryWrapper<>();
        //根据激活码内容找对应数据
        wrapper.eq("invitation_string",ma);
        DqInvitation dqInvitation = dqInvitationMapper.selectOne(wrapper);

        if(dqInvitation.getState() == 0){
            System.out.println("是否使用"+false);
            return false;
        }else {
            System.out.println("是否使用"+true);
            return true;
        }

    }

    //激活
    @Override
    public boolean jihuo(String ma, Integer roleId) {
        //判断是否有该游戏(未实现)
        //判断未使用过,在保质期内
        if(!ifGuoQi(ma) && !ifUse(ma)){
        //获取这条激活码信息
            QueryWrapper<DqInvitation> wrapper = new QueryWrapper<>();
            //根据激活码内容找对应数据
            wrapper.eq("invitation_string",ma);
            DqInvitation dqInvitation = dqInvitationMapper.selectOne(wrapper);
            //改变状态为使用过
            dqInvitation.setState(1);
            //添加当前时间
            LocalDateTime nowTime= LocalDateTime.now();
            dqInvitation.setActivationTime(nowTime);
            //修改验证码表
            dqInvitationMapper.updateById(dqInvitation);
         //加入库表里
            DqWarehouse dqWarehouse = new DqWarehouse();
            //加入对应游戏id
            dqWarehouse.setGameId(dqInvitation.getGameId());
            //加入对应角色
            dqWarehouse.setRoleId(roleId);
            dqWarehouseMapper.insert(dqWarehouse);

            //返回成功
            return true;
        }else {
            System.out.println("验证码无效");
            return false;
        }

    }





























}
